LuCloud 3 Virtualization of CPU, Memory, and I/O Devices

LuCloud 3 Virtualization of CPU, Memory, and I/O Devices

五月 01, 2019

cover

Overview

为了支持虚拟化,x86等处理器采用了特殊的运行模式和指令(通过Intel VTAMD V拓展),称为硬件辅助虚拟化hardware-assisted virtualization。这样,VMM和客户操作系统以不同的模式运行,客户操作系统及其应用程序的所有敏感指令都被困在VMM中。为了节省处理器状态,模式切换由硬件完成。对于x86架构,英特尔和AMD拥有硬件辅助虚拟化的专有技术。

为了确保关键硬件的受控访问因此,所有处理器至少具有两种模式,用户模式(目态,用户态)和监管模式(管态,管理员态)。以管理员模式运行的指令称为特权指令。其他说明是非特权指令。

CPU Virtualization

指令

  • 非特权指令:直接在主机上运行获得高效率
  • 关键指令:
    • 特权指令:在特权模式下执行,如果在此模式之外执行,则会被捕获;
    • 控制敏感指令:尝试更改所使用资源的配置;
    • 行为敏感指令:具有不同的行为,具体取决于资源的配置,包括虚拟内存上的加载和存储操作。

虚拟化原理

如果CPU架构支持在CPU的用户模式下运行VM的特权和非特权指令,而VMM以管理员模式运行,则可以虚拟化CPU架构。当执行包括VM的控制和行为敏感指令的特权/关键指令时,它们被捕获在VMM中。在这种情况下,VMM充当来自不同VM的硬件访问的统一中介,以保证整个系统的正确性和稳定性。

虚拟化实现

  • RISC CPU架构可以自然地虚拟化,因为所有对控制和行为敏感的指令都是特权指令。
  • x86 CPU架构主要不是为支持虚拟化而设计的。这是因为大约10条敏感指令(例如SGDT和SMSW)不是特权指令。当这些指令在虚拟化中执行时,它们不能被困在VMM中。因此可以利用硬件协助虚拟化Hardware-Assisted CPU Virtualization技术(例如Intel VTAMD V)完成。

Memory Virtualization

内存管理历史

  • 传统执行环境,通过页表(或段表)管理逻辑地址到物理地址的映射;
  • 现代处理器增加了MMU和TLB,增加快表通过请求中断和页面置换机制构建虚拟存储器;
  • 虚拟执行环境中的虚拟内存虚拟化涉及在RAM中共享物理系统内存并将其动态分配给VM的物理内存,因此通过二阶映射来处理内存管理。

虚拟化原理

客户OS仍然控制从逻辑地址到物理地址(VM中)的映射(一级),只是客户OS并不访问真正的物理内存,而是通过VMM完成客户机(VM)物理地址到真正机器物理地址的映射(二级)。

虚拟化实现

  • 由于客户操作系统的每个页表在与其对应的VMM中具有单独的页表,因此VMM中页表称为影子页表。
  • MMU处理OS定义的逻辑地址到物理地址的转换(一级);
  • VMM定义的另一组页表将物理存储器地址转换为机器地址(二级);

虚拟化改善

由于现代操作系统为每个进程维护一组页表,因此,性能开销和内存成本将非常高。

  • VMware使用影子页表来执行虚拟内存到机器内存的地址转换。处理器使用TLB硬件将虚拟内存直接映射到机器内存,以避免每次访问时的两级转换。当客户操作系统将虚拟内存更改为物理内存映射时,VMM会更新影子页表以启用直接查找。
  • 硬件协助虚拟化Hardware-Assisted CPU Virtualization
    • AMD通过使用nested paging技术,为虚拟执行环境中的两阶段地址转换提供硬件辅助;
    • Intel VT技术利用Extended Page Table技术完成内存虚拟化。

I/O Virtualization

full device emulation

设备或总线基础结构的所有功能(例如设备枚举,标识,中断和DMA)都在软件中复制。该软件位于VMM中,充当虚拟设备。客户OS的I / O访问请求被捕获在与I / O设备交互的VMM中。

缺点:完全软件模拟,速度慢。

para-virtualization

基于Xen的半虚拟化方法。也被称为分离驱动模型split driver model:

  • frontend driver:运行于Domain U。管理客户OS的I / O请求;
  • backend driver:运行于Domain 0。管理实际I / O设备并复用不同VM的I / O数据。

二者通过共享内存块交互。

缺点:CPU开销较大

direct I/O

直接I / O虚拟化允许VM直接访问设备。

由于基于软件的I / O虚拟化需要非常高的设备仿真开销,因此硬件辅助I / O虚拟化至关重要。 Intel VT-d支持重新映射I / O DMA传输和设备生成的中断。 VT-d的体系结构提供了支持多种使用模型的灵活性,这些模型可以运行未经修改的,特殊用途的或“虚拟化感知”的客户操作系统。

self-virtualized I/O (SV-IO)

SV-IO的关键思想是利用多核处理器的丰富资源。与虚拟化I / O设备相关的所有任务都封装在SV-IO中。它为VM提供虚拟设备和相关的访问API,并为VMM提供管理API。 SV-IO为每种虚拟化I / O设备定义了一个虚拟接口(VIF),例如虚拟网络接口,虚拟块设备(磁盘),虚拟摄像机设备等。客户操作系统通过VIF设备驱动程序与VIF交互。每个VIF由两个消息队列组成。一个用于发送到设备的消息,另一个用于来自设备的传入消息。此外,每个VIF都有一个唯一的ID,用于在SV-IO中识别它。